<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Client/Serveur FTP simplifié en RPC-Groupe 1-Spécification & Conception</title>
<meta http-equiv="Content-Language" content="English" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
</head>
<body>

<div id="wrap">

<div id="header">
<h1>&nbsp;</h1>
<h1>&nbsp;</h1>
<h1><a href="#">Client/Serveur FTP simplifié en RPC</a></h1>
<h2>Groupe 1</h2>
</div>

<div id="right">

<h2><a href="specification.html"><strong>Spécification & Conception</strong></a></h2>
<div class="articles">
<p><strong>Spécification fonctionnelle de l'application</strong><br />
            Comme nous  avons mentionné plus haut notre application est constituée de deux programmes :  un client qui interagit avec l'utilisateur et un serveur qui interagit avec le  client (voire figure1). Afin de mettre sur pied le transfert de fichier simple,  les opérations possibles sont :</p>
<ul>
  <li><em>pwd</em> :  Cette opération affiche le répertoire courant de l'environnement du serveur.</li>
  <li><em>lpwd</em> :  affiche le répertoire courant de l'environnement du client (il s'agit de son  répertoire local).</li>
  <li><em>cd argument</em> : change le répertoire courant du serveur en «&nbsp;argument&nbsp;».</li>
  <li><em>lcd repertoire</em> : change le répertoire  courant du client en répertoire. </li>
  <li><em>ls</em> : affiche le contenu du répertoire  courant du serveur. </li>
  <li><em>lls</em> : affiche le contenu du répertoire  courant du client. </li>
  <li><em>get fichier</em> : «&nbsp;transfère&nbsp;»'  le fichier fichier du répertoire courant du serveur vers le répertoire courant du client.</li>
  <li><em>put fichier</em> : «&nbsp;transfère&nbsp;»  le fichier fichier du répertoire courant du client vers le répertoire courant du serveur. </li>
  <li><em>bye</em> : termine la session de transfert  de fichier.</li>
</ul>
<p>            En  plus des opérations listées ci-dessus, le serveur doit être capable de gérer  plusieurs clients simultanément c'est à dire il doit être concurrent. Il doit  aussi pouvoir authentifier les différents utilisateurs. <br />
  <img src="images/specification_clip_image002.jpg" alt="1" width="566" height="178" /><br />
  Interaction entre utilisateur serveur et client FTP.</p>
<ul>
  <ul>
    <li><strong>Conception</strong></li>
  </ul>
</ul>
<p>            Pour  permettre la communication entre les programmes clients et serveurs, il est  indispensable de définir un protocole de communication commun aux deux. Bien  qu'il soit possible d'utiliser UDP (cas de TFTP), le plus souvent c'est le  protocole de transport fiable TCP qui est utilisé par les serveurs FTP. Étant  donné que notre application est très simple d'un point de vu fonctionnel, nous  allons utiliser TCP comme protocole de communication entre le client et le  serveur.<br />
  Il  est indispensable de spécifier les différentes opérations qui sont réaliser au  niveau du serveur  car celles-ci doivent  être décrites dans le fichier de spécification de RPC. Ainsi, les opérations <em>pwd,  cd argument ls, get et put</em> sont réalisées au niveau du serveur. En plus de  ses opérations pour des soucis de mise en œuvre, nous avons décrit plusieurs  autres opérations, il s'agit entre autre de :</p>
<ul>
  <li><em>write</em> : Opération d'écriture d'un bloc de données sur son serveur</li>
  <li><em>read</em> :  Opération de lecture d'un bloc de données sur le serveur</li>
  <li><em>open </em>:  Ouverture d'un fichier sur le serveur.</li>
  <li><em>close</em> : fermeture d'un fichier sur le serveur.    </li>
</ul>
<p>            Les  clients utilisent ces opérations via le mécanisme d'appel de procédure à  distance offert par le protocole RPC.     </p>
<p><strong>Principe du  transfert de fichier</strong><br />
  a)Transfert du serveur vers le client  (get)<br />
  L'algorithme de transfert de fichier du  serveur vers le client est le suivant :</p>
<ul>
  <li>Le client demande l'ouverture d'un fichier sur le serveur en spécifiant  le mode d'ouverture de ce dernier. En cas de réussite, celui-ci reçoit le  descripteur du fichier correspondant.  </li>
  <li> Répéter  </li>
  <li> Lire un bloc de données sur le serveur</li>
  <li> Jusqu'à ce que la taille du bloc lu soit  inférieure à 4 caractères.</li>
  <li> fermer le fichier sur le serveur</li>
</ul>
<p>b) Transfert du client vers le serveur  (put)<br />
  L'algorithme  de transfert de fichier du client vers le serveur est le suivant : </p>
<ul>
  <li> Le client demande la création d'un fichier de  même non que celui dont il veut transférer sur le serveur. En cas de réussite,  celui-ci reçoit le descripteur du fichier correspondant. </li>
  <li> Répéter</li>
  <li> Ecrire un bloc de données sur le serveur </li>
  <li> Jusqu'à ce que le fichier soit entièrement  écrit sur le serveur</li>
  <li> Fermer le fichier sur le serveur     </li>
</ul>
<ul>
  <ul>
    <li><strong>Principe  de fonctionnement du programme</strong></li>
  </ul>
</ul>
<p>            Pour compiler notre  application, il suffit d'exécuter  les  commandes suivantes : </p>
<p> <em>make  client serveur</em> pour générer les exécutables du client et du serveur.  L'exécution du serveur est lancée par la commande <em>serveur</em> tandis que  celle du client est lancée par </p>
<p><em>client  &lt;server_host_name&gt;</em> <em>&lt;user_name&gt;</em> ou «server_host_name» est  le nom de la machine sur laquelle tourne le serveur, et «user_name» le nom  d'utilisateur </p>
<p>&nbsp;</p>
</div>
<h2>&nbsp;</h2>
</div>

<div id="left"> 

<h3>Categories :</h3>
<ul>
<li><a href="index.html">Introduction</a></li> 
<li><a href="specification.html">Spécification & Conception</a></li>
<li><a href="realisation.html">Réalisation pratique</a></li> 
<li><a href="resultat.html">Résultats et analyse</a></li>
<li><a href="conclusion.html">Conclusion</a></li> 
 <li><a href="membres.html">Membres de l'équipe 1</a></li> 
</ul>



</div>
<div style="clear: both;"> </div>

<div id="footer">
Designed by <a href="http://www.free-css-templates.com/">Free CSS Templates</a></div>
</div>


</body>
</html>